package NIO;



/*capacity :容量，表示缓冲区中最大存储数据的容量。-旦声明不能改变。
limit :界限，表示缓冲区中可以操作数据的大小。(limit 后数据不能进行读
position:位置,表示缓冲区中正在操作数据的位置。

mark :标记，表示记录当前position的位置。可以通过reset()恢复到mark的位置

0<=mark<=position <= limit <= capacity*/

import java.nio.ByteBuffer;

public class TestBuffer2 {
    public static void main(String[] args) {
        ByteBuffer byteBuffer=ByteBuffer.allocate(1024);
        String string="abcde";
        byteBuffer.put(string.getBytes());
        byteBuffer.flip();
        byte[] dst=new byte[byteBuffer.limit()];

        byteBuffer.get(dst, 0, 2);
        System.out.println(new String(dst,0,2));
        System.out.println(byteBuffer.position());

        //标记
        byteBuffer.mark();
        byteBuffer.get(dst,2,2);
        System.out.println(byteBuffer.position());
        //回到标记
        byteBuffer.reset();
        System.out.println(byteBuffer.position());


        //判断缓冲区中是否还有剩余的数据
        if (byteBuffer.hasRemaining()){
            //获取缓冲区中可以操作的数量
            System.out.println(byteBuffer.remaining());
        }
    }
}
